package Modelo;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.WindowEvent;
import java.io.Serializable;
import javax.swing.JOptionPane;

public class Autito  extends Movil implements Serializable  {

	private static final long serialVersionUID = 7L;
        public boolean carga,flag_auto, ignorar_teclas;
        private int contador;
        private Color backup;
        
        public Autito(Integer id0, Integer x0,Integer y0,Integer w0,Integer h0,Color c,Integer vida, Boolean estado){
            super(id0, x0,y0,h0,w0,c,vida,estado);
            carga=false; //comiezan descargados
            dx=4;
            dy=4;
            contador=0;
            ignorar_teclas = false;     
        }

        /*Metodo para cargar autos*/
        public void setCarga(){
            
                carga=true;
                System.out.print("Autito"+this.id+"se carga");
      	}
        /*Metodo para descargar auto*/
        public  void getCarga(){
            
                carga=false;
                System.out.print("Autito"+this.id+"se descarga");
      	}
        public int getContador(){

                return contador;
      	}
        
        public void setPunto(){
            while(contador<=10){
            contador++;
            break;
            }
            while(contador==10){
            this.finJuego();
            break;
            }
        }
        
        public synchronized void setInvisible(){
            backup = this.color;
            this.color = Color.gray;
        } 
        
        
        public synchronized void setVisible(){
            this.color = backup;
        } 
        
        
        /*Metodo para impedir el paso entre objetos*/
        public void rebota() {

            moverse(xAnterior,yAnterior);
        }
        

        @Override
	public void dibujar(Graphics g){

                g.setColor(color);
               
                g.fillRect(x, y, ancho, alto);
      	}
        
        /*Metodos de colision*/
        @Override
        public void colision(Figuras figura) {    
        } 

	@Override
	public synchronized void colision(Autito a) {
            a.rebota();
	}

        @Override
        public void colision(Pared pared) {
        }
     
        @Override
    public synchronized void colision(Policia poli) {
    
            
     
        int xAux=poli.x;  //posiciones al chocar
        int yAux=poli.y;

        poli.x-=(poli.x-poli.xAnterior)*5;
        poli.y-=(poli.y-poli.yAnterior)*5;

        poli.xAnterior=xAux; //posiciones antes del choque
        poli.yAnterior=yAux;

        poli.dx = poli.dx*(-1);
        poli.dy = poli.dy*(-1);

        
        arbitro.CheckAll(this);
        
    }
        
        synchronized void toogleIgnorarTeclas(){
            ignorar_teclas = !ignorar_teclas;
        }
        
        

    private void finJuego() {
         //this.windowClosing(null);
        System.out.println("FIN DEL JUEGO. A OTRA COSA MARIPOSA\n\n");

      }
    
    /*
    public void windowClosing(WindowEvent e) {
        // throw new UnsupportedOperationException("Not supported yet.");
       int exit = JOptionPane.showConfirmDialog(escenario, "Ha ganado "+this.getID()+" Desea salir ?");
            if (exit == JOptionPane.YES_OPTION) {
                System.exit(0);

            }
    }
     */
    }

        
